# -*- coding:utf-8 -*-
"""
@Author : 审心
@Time : 2023/3/22 10:23
对服务端发起自动机器相关的请求
"""
from request.utils.request import Request
from config import data as config


def get_api():
    """
    获取机器接口
    :return: 机器接口字典 {接口名: {'name' : '','uri' : ''}}
    """
    return Request('get', 'public/robot/getApiUri', {}, "获取机器接口", req_is_log=True).send()


def reg(robot_number: int, port: int, remote_code=None, remote_pwd=None):
    """
    注册机器
    :param port: flask 端口号
    :param robot_number: 机器编号
    :param remote_code:  远控代码
    :param remote_pwd: 远控密码
    :return: 请求结果
    """
    return Request('post', 'public/robot/reg', {
        'robotNumber': robot_number,
        'port': port,
        'remoteCode': remote_code,
        'remotePwd': remote_pwd
    }, "注册机器", req_is_log=True).send()


def update_status(robot_number: int, status_id: int, statement_id: int = None, task_id: int = None,
                  task_name: str = None):
    """
    修改机器状态
    :param robot_number:  机器编号
    :param status_id: 机器状态id 1:闲置 2:运行 3:已掉线 4:周期任务待机
    :param statement_id: 任务报表id 传入将同时更改当前任务的报表状态
    :param task_id: 当前执行任务id
    :param task_name: 当前执行任务名称
    :return: 请求结果
    """
    return Request('post', 'public/robot/updateStatus', {
        'robotNumber': robot_number,
        'statusId': status_id,
        'statementId': statement_id,
        'taskId': task_id,
        'taskName': task_name
    }, "修改机器状态", req_is_log=True).send()


def update_status_v2(robot_number: int, status_id: int, statement_id: int = None, task_id: int = None,
                     task_name: str = None):
    """
    修改机器状态 V2
    :param robot_number:  机器编号
    :param status_id: 机器状态id 1:闲置 2:运行 3:已掉线 4:周期任务待机
    :param statement_id: 任务报表id 传入将同时更改当前任务的报表状态
    :param task_id: 当前执行任务id
    :param task_name: 当前执行任务名称
    :return: 请求结果
    """
    return Request('post', 'public/robot/updateStatusV2', {
        'robotNumber': robot_number,
        'statusId': status_id,
        'statementId': statement_id,
        'taskId': task_id,
        'taskName': task_name
    }, "修改机器状态V2", req_is_log=True).send()


def append_task_statement_result(statement_id: int, task_status: int,
                                 task_log_base64=None, task_file_base64=None,
                                 task_file_suffix=None, errMsg=None):
    """
    追加任务报表结果
    :param statement_id: 报表id
    :param task_status: 任务状态 0:未开始 1:已开始 2:已结束 3:失败
    :param task_log_base64: 任务日志 Base64
    :param task_file_base64: 任务附件 Base64
    :param task_file_suffix: 任务附件 文件后缀名
    :param errMsg: 错误信息提要
    :return: 响应
    """
    return Request('post', 'public/robot/statement/appendResult', {
        "statementId": statement_id,
        "taskStatus": task_status,
        "taskLogBase64": task_log_base64,
        "taskFileBase64": task_file_base64,
        "taskFileSuffix": task_file_suffix,
        "errMsg": errMsg
    }, "追加任务报表结果", req_is_log=True, req_param_is_log=False).send()


def append_task_statement_result_v2(statement_id: int, task_status: int,
                                    task_log_base64=None, task_file_base64=None,
                                    task_file_suffix=None, errMsg=None):
    """
    追加任务报表结果 v2
    :param statement_id: 报表id
    :param task_status: 任务状态 0:未开始 1:已开始 2:已结束 3:失败
    :param task_log_base64: 任务日志 Base64
    :param task_file_base64: 任务附件 Base64
    :param task_file_suffix: 任务附件 文件后缀名
    :param errMsg: 错误信息提要
    :return: 响应
    """
    return Request('post', 'public/robot/statement/appendResultV2', {
        "statementId": statement_id,
        "taskStatus": task_status,
        "taskLogBase64": task_log_base64,
        "taskFileBase64": task_file_base64,
        "taskFileSuffix": task_file_suffix,
        "errMsg": errMsg
    }, "追加任务报表结果 V2", req_is_log=task_file_base64 is None, req_param_is_log=False).send()


if __name__ == '__main__':
    get_api()
    update_status(1646445331019808769, 2)
